#pragma once
#include<functional>
#include<syscall.h>
#include<unistd.h>
#include"Epoll.h"

class Epoll;

class EventLoop
{
private:
    // 每一个事件循环对应一个Epoll
    Epoll *ep_;
    // epoll_wait超时的回调函数
    std::function<void(EventLoop*)> epolltimeoutcallback_;
public:
    // 构造函数，创建Epoll对象
    EventLoop();
    // 析构函数，销毁Epoll对象
    ~EventLoop();
    // 运行事件循环
    void run();
    // 返回成员ep_
    Epoll* ep();
    // 设置 epolltimeoutcallback_回调函数，调用TcpServer::epolltimeout
    void setepolltimeoutcallback(std::function<void(EventLoop*)> fn);
};